Data transmission can be unreliable. For larger files, it is almost guaranteed that some data will be lost. This problem is particularly acute in wireless transmission. To address this problem, packet transmission was developed. In packet transmission, files are broken into small packets that are transmitted separately. This type of system is used on the Internet. Transmission Control Protocol (TCP) includes specific formatting for packets that includes error checking and the necessary information to assemble the packets into the original file. When a packet is received, the error control information is used to determine if the packet has been corrupted. An acknowledgement message (ACK) is then sent from the recipient (sink) to the sender (source) indicating if the packet was received intact. If not, the source sends it again. This process is highly effective and remains the backbone of the Internet. Although more sophisticated protocols have replaced the original TCP in many cases, this fundamental process remains.
However, for bandwidth constrained applications, TCP and TCP-like protocols require too much overhead. This is particularly true in wireless networks like cellular communications. Packet transmission in mobility is subject to high packet loss ratio. Even with the best wireless link, data losses can be high and thus the network can be choked with error correction traffic. Therefore, TCP and similar protocols are not as effective in these environments.